"use strict";
{
    class List {
        constructor() {
            this.pos = 0; // 列表中的元素个数
            this.listSize = 0;
            this.length = 0; // 返回列表中的元素个数
            this.dataStore = [];
        }
        // 清空方法
        clear() {
            this.pos = 0;
            this.listSize = 0;
            this.length = 0;
            this.dataStore.length = 0;
        }
        // 返回列表的字符串形式
        toString() {
            return this.dataStore;
        }
        // 返回当前位置的元素
        getElement() {
            return this.dataStore[this.pos];
        }
        // 在现有元素后插入新元素
        insert(element) {
            this.dataStore.splice(this.pos, 0, element);
        }
        // 在列表的末尾添加新元素
        append(element) {
            this.dataStore[this.listSize++] = element;
        }
        // 从列表中删除元素
        remove(element) {
            let index = this.find(element);
            if (index === -1)
                return false;
            this.dataStore.splice(index, 1);
            this.listSize--;
            return true;
        }
        // 将列表的当前位置设移动到第一个元素
        front() {
            if (this.pos !== 0) {
                console.log(this.dataStore);
                this.exchange(0, this.pos);
                console.log(this.dataStore);
            }
        }
        // 将列表的当前位置移动到最后一个元素
        end() {
            if (this.pos !== this.listSize) {
                this.exchange(this.listSize - 1, this.pos);
            }
        }
        // 将当前位置后移一位
        prev() {
            if (this.pos > 0) {
                this.pos--;
            }
        }
        // 将当前位置前移一位
        next() {
            if (this.pos < this.listSize) {
                this.pos++;
            }
        }
        // 返回列表的当前位置
        currPos() {
            return this.pos;
        }
        // 将当前位置移动到指定位置
        moveTo(pos) {
            if (pos > this.listSize - 1) {
                return false;
            }
            else {
                return (this.pos = pos);
            }
        }
        // 工具函数 - 查找一个元素的位置
        find(element) {
            return this.dataStore.indexOf(element);
        }
        exchange(element1, element2) {
            let temp = this.dataStore[element1];
            this.dataStore[element1] = this.dataStore[element2];
            this.dataStore[element2] = temp;
        }
    }
    let names = new List();
    names.append("jimmy");
    names.append("xuexue");
    names.append("Jack");
    names.append("Henry");
    console.log(names.getElement());
    names.next();
    console.log(names.getElement());
    names.clear();
    names.append("Henry");
    names.append("jimmy");
    names.append("xuexue");
    names.append("Jack");
    names.moveTo(3);
    console.log(names.getElement());
    names.front();
    console.log(names.getElement());
    console.log(names.length);
}
